package main

import "fmt"

type Profile struct {
	name   string
	age    int
	gender string
}

//想要在方法内改变实例的属性的时候，必须使用指针做为方法的接收者。这种称之为【指针方法】
//还是那句话，但凡看到有*号，是表示的数据类型——指针类型。
// 重点在于这个星号: *
func (person *Profile) increaseAge() {
	person.age++
	//前面说过，对于结构体来说，会隐试调用指针的，上面的写法等价于下面
	(*person).age++
}

//作为对比，不加*号的话，不会改变实例的属性值。这种称之为【值方法】
func (person Profile) decreaseAge() {
	person.age--
}

func main() {
	tom := Profile{name: "Tom", age: 24, gender: "male"}
	tom.increaseAge() //加了2
	fmt.Println(tom.age)
	tom.decreaseAge() //不会改变
	fmt.Println(tom.age)
}
